package bd;

/*
 * Esse arquivo é parte do Software new Recicle
 * 
 * Copyright (C) 2011-$AnoCorrente$ Eduardo Moreira Barbosa
 * Copyright (C) 2011-$AnoCorrente$ João dos Santos Gonçalves
 * Copyright (C) 2011-$AnoCorrente$ Lucas Ximenes da Fonseca
 * 
 * new Recicle é um Software Livre: Você pode redistribuí-lo e/ou modificá-lo
 * de acordo com os termos da Licença Pública Geral GNU (GNU General Public License)
 * conforme publicada pela Free Software Foundation (FSF). Essa permissão é atribuída
 * na versão 3 da Licença, ou (na sua opinião) qualquer versão.
 * 
 * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este programa,
 * se não, escreva para a Fundação do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor,
 * Boston, MA  02110-1301  USA
 * 
 * Se você tiver alguma dúvida e/ou quiser dar suporte ao desenvolvimento, favor entrar em
 * contato nos e-mails <barbosa.edrd@gmail.com>, <john.jsg@hotmail.com>, <lxf.lucas@gmail.com>.
 */



import java.sql.SQLException;
import rh.Associado;



public class BancoAssociado{

    private String comando;
    private String pesquisa;
    private String Id = "";
    
    /**
     * Cadastro de Associados
     * 
     * @exception       Exceção SQL
     * @exception       Exceção SQL
     * @author          Eduardo Moreira Barbosa
     * @author          João dos Santos Gonçalves
     * @author          Lucas Ximenes da Fonseca
     */
    
    public void cadastrar(){
        
        comando = "Insert into Ervilha.Associado (Nome, Senha, " +
                                     "Cpf, Sexo, Imagem)" + 
                                     "Values ('" + Associado.getAssociado().getNome() + "'" +
                                     ",'" + Associado.getAssociado().getSenha() + "'" +
                                     ",'" + Associado.getAssociado().getCpf() + "'" +
                                     ",'" + Associado.getAssociado().getSexo() + "'" +
                                     ",'" + Associado.getAssociado().getImagem() + "')";
        try{            
            BancoDeDados.STATEMENT = BancoDeDados.CONNECTION.createStatement();
            try{                        
                BancoDeDados.STATEMENT.executeUpdate(comando);
                
            } catch (SQLException sQLException){
                    sQLException.printStackTrace();
                }
        } catch (SQLException sqle) {
             sqle.printStackTrace();
        }
    }
    
   
    /**
     * Remoção de Associados
     * 
     * @param comparar  Associado a ser excluido do Banco de dados
     * @exception       Exceção SQL
     * @author          Eduardo Moreira Barbosa
     * @author          João dos Santos Gonçalves
     * @author          Lucas Ximenes da Fonseca
     */
    
    public void apagar(String comparar){
        try{
            comando = "Delete from Ervilha.Associado where Nome = '" + comparar + "'";
            BancoDeDados.PREPAREDSTATEMENT = BancoDeDados.CONNECTION.prepareStatement(comando);
            BancoDeDados.PREPAREDSTATEMENT.execute();
            BancoDeDados.PREPAREDSTATEMENT.close();
        } catch (SQLException sQLException){
            sQLException.printStackTrace();
        }        
    }
    
    /**
     * Pesquisar no Banco de Dados
     * 
     * @param comparar  Associado a ser pesquisado no Banco de Dados
     * @return          Associado se existir no Banco de Dados ou null se não existir
     * @exception       Exceção SQL
     * @author          Eduardo Moreira Barbosa
     * @author          João dos Santos Gonçalves
     * @author          Lucas Ximenes da Fonseca
     */
    
    public String pesquisarBanco(String comparar){
        String sql = "Select * from Ervilha.Associado";
        
        try{
           BancoDeDados.PREPAREDSTATEMENT = BancoDeDados.CONNECTION.prepareStatement(sql);
           BancoDeDados.RESULTSET = BancoDeDados.PREPAREDSTATEMENT.executeQuery();
           while (BancoDeDados.RESULTSET.next()){
               String Nome = BancoDeDados.RESULTSET.getString("Nome");
               String senha = BancoDeDados.RESULTSET.getString("Senha");
               String cpf = BancoDeDados.RESULTSET.getString("Cpf");
               String sexo = BancoDeDados.RESULTSET.getString("Sexo");
               String imagem = BancoDeDados.RESULTSET.getString("Imagem");
               
               pesquisa = Nome + "#" + senha + "#" + cpf + "#" + sexo + "#" + imagem;
               
               if (Nome.equals(comparar)){
                 return Nome;
               }
          }
        } catch (SQLException sQLException){
            sQLException.printStackTrace();
        }
        return null;
    }
    
    /**
     * Retornar Pesquisa no Banco de Dados
     * 
     * @see             Método pesquisarBanco
     * @return          Todos os dados de um Associado
     * @author          Eduardo Moreira Barbosa
     * @author          João dos Santos Gonçalves
     * @author          Lucas Ximenes da Fonseca
     */
    
    public String retornarBanco(){
        return pesquisa;
    }

    /**
     * Pesquisar os Associados
     * 
     * @return          null se não existir Associado no Banco de Dados
     * @exception       Exceção SQL
     * @author          Eduardo Moreira Barbosa
     * @author          João dos Santos Gonçalves
     * @author          Lucas Ximenes da Fonseca
     */
    
    public String pesquisarId(){
        String sql = "Select * from Ervilha.Associado";        
        try{
           BancoDeDados.PREPAREDSTATEMENT = BancoDeDados.CONNECTION.prepareStatement(sql);
           BancoDeDados.RESULTSET = BancoDeDados.PREPAREDSTATEMENT.executeQuery();
           while (BancoDeDados.RESULTSET.next()){
               String nome = BancoDeDados.RESULTSET.getString("Nome");               
               Id += nome + "#";
          }
        } catch (SQLException sQLException){
            sQLException.printStackTrace();
        }
        return null;
    }
    
    /**
     * Retornar os Associados
     * 
     * @see             Método pesquisarId
     * @return          Todos os Associados
     * @author          Eduardo Moreira Barbosa
     * @author          João dos Santos Gonçalves
     * @author          Lucas Ximenes da Fonseca
     */
    
    public String[] retornarId(){
        String[] nomes;
        nomes = Id.split("#");
        return nomes;
    }
    
    /**
     * Alterar Associado
     * 
     * @see             Classe Associado
     * @param associado Novas características do Associado
     * @param pesquisa  Associado a ser modificado no Banco de Dados
     * @exception       Exceção SQL
     * @author          Eduardo Moreira Barbosa
     * @author          João dos Santos Gonçalves
     * @author          Lucas Ximenes da Fonseca
     */
    
    public void alterar(Associado associado, String pesquisa){

        String sql = "Update Ervilha.Associado set Nome = ?, Senha = ?, Cpf = ?, Sexo = ?, Imagem = ? where Nome = ?";
        try{
           BancoDeDados.PREPAREDSTATEMENT = BancoDeDados.CONNECTION.prepareStatement(sql);
           BancoDeDados.PREPAREDSTATEMENT.setString(1, associado.getNome());
           BancoDeDados.PREPAREDSTATEMENT.setString(2, associado.getSenha());
           BancoDeDados.PREPAREDSTATEMENT.setString(3, associado.getCpf());
           BancoDeDados.PREPAREDSTATEMENT.setString(4, associado.getSexo());
           BancoDeDados.PREPAREDSTATEMENT.setString(5, associado.getImagem());
           BancoDeDados.PREPAREDSTATEMENT.setString(6, pesquisa);
           BancoDeDados.PREPAREDSTATEMENT.execute();
           BancoDeDados.PREPAREDSTATEMENT.close();           
        } catch (SQLException sQLException){
            sQLException.printStackTrace();
        }
    }   
}